/*
 * Created on 06/09/2005
 */
package control;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import model.Usuario;


public class ControllerFilter implements Filter {

	  
    public void init(FilterConfig config) throws ServletException{}  
  
    public void destroy(){}  
  
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)   
        throws IOException, ServletException { 
    	
    	
    	HttpSession session = (((HttpServletRequest)request).getSession());
	
   
    	if(session.getAttribute("logado") == null ){
			//Se a condicao acima for verdadeira é pq ou eh a primeira vez que o usuário estah tentando logar ou é algum malandro 
    		//tentando acessar uma pagina sem estah logado
    		
    		//A forma que eu tenho de saber se eh um usuário normal tentando se logar eh pegando os parametros do formulário de login
    		String login = request.getParameter("login");
    		String senha = request.getParameter("senha");
    		
    		if(login != null && senha != null){
    			Usuario usuario = new Usuario(login,senha);
    			boolean verif = usuario.isUsuarioValido();

    			if(verif){
    				session.setAttribute("logado", usuario);    				
    				chain.doFilter(request, response);
    			}else{
    				HttpServletRequest r = (HttpServletRequest)request;
    				r.getRequestDispatcher("/paginas/login_invalido.jsp").forward(request, response);
    			}
    		}else{
    			//Se entrar aqui, eh pq algum malandro está tentando acessar alugma pagina sem passar pela tela de login.
    			HttpServletRequest r = (HttpServletRequest)request;
				r.getRequestDispatcher("/paginas/login.jsp").forward(request, response);
    		}    		    		
    	}else{
			chain.doFilter(request, response);
		}    	
    } 	
}